The HTTP session PUSH mechanism allows for pushing resources (e.g., images, scripts, etc.) from a server into a client browser cache independently of the client's HTTP request. This pushing requires that the underlying browser and acceleration proxy are SPDY® capable and support the PUSH method for asynchronously sending resources to a client on a per page per session basis.
SPDY® is an open networking protocol for transporting web content with goals of reducing web page load latency and improving web security. This reduced latency is achieved by SPDY® via compression, multiplexing, and prioritization of webpage sub-resources across a single connection per client.
To accelerate delivery of resources to browsers, SPDY® protocol uses two mechanisms: Server Push, and Server Hint. The Server Push mechanism involves sending a resource directly to a client without first receiving a request for the resource. The Server Hint mechanisms involves providing a URL to a client device, thereby notifying the client device that the resource(s) associated with the provided URL will be necessary. In response to receiving the URL, the client device determines whether the URL is already stored in the client cache and, if it does not, the client device may request the resource associated with the URL from the server. Thus, the client device receives limited information about the resource(s) and only requests the resource itself if it is needed. T
The PUSH mechanisms defined in SPDY® protocol can also be used as mechanisms for pushing resources to a client device using HTTP 2.0 protocol. That is, by implementing PUSH mechanisms, an HTTP 2.0 server can be configured to provide data for rendering a web page prior to browser examination of a response. The HTTP 2.0 protocol version further improves upon SPDY® by permitting multiplexing at different hosts simultaneously, thereby significantly increasing the speed of downloading multiple web pages or other Internet-based content.
Existing solutions for pushing content typically require either blindly supplying resource information to a client, or interacting with the client to determine exactly which resource(s) the client will need. Such solutions may waste computing resources and make resource delivery less efficient by supplying already cached resources, or by requiring significant communication between the server and client regarding potential resources to be sent.
Specifically, currently there is no proxy solution for determining, based on the context of the request, which resources should be pushed and according to which priority. That is, although PUSH mechanisms are supported by an HTTP 2.0 protocol, such mechanisms define only how to transport the resources. However, the HTTP 2.0 protocol and the SPDY protocol do not provide any mechanisms or techniques to optimize or further accelerate the delivery of resources by a proxy or an origin server.
Therefore, it would be advantageous to provide a solution that overcomes the deficiencies noted above.